ManyToManyField {django}
- ref:
Django는 ManyToManyField가 정의되면 자동으로 중계 테이블을 생성해준다. 테이블 이름은 <table_a>_<table_b>_<hash>
의 형태가 된다. 임의의 중계테이블 이름을 정의하고 싶은 경우, db_table
키워드 인자를 적용해주면 된다.
만약 중계테이블에 추가적인 메타데이터를 필요로 하는 경우, through
키워드 인자를 사용하여 원하는 모델을 중계테이블로써 활용도 가능하다. Extra fields on many to many relationships
M2M 필드를 갖고있는 모델이 약한개체인건가?
Generally, ManyToManyField instances should go in the object that's going to be edited on a form.
일반적으로, ManyToManyField 인스턴스는 직접적으로 사용될 객체에 정의되는 것이 올바릅니다.
예를 들어 "피자에 올릴 토핑"이 "토핑이 올라갈 피자" 보다는 상식적이기 때문에 Pizza에 ManyToManyField를 정의하는 것이 올바릅니다.
field 추가
M2M 필드의 add
메서드를 호출하거나 create
메서드를 호출하면 된다.
쿼리
M2M 필드의 all
, get
, filter
를 모두 사용 가능하다. querying in {django query}